import axios from "axios";

// axios 二次封装
class Http {
  constructor() {
    this.instance = axios.create({
      baseURL: "/api",
    });

    // 请求拦截器
    this.instance.interceptors.request.use(
      config => {
        const token = localStorage.getItem('token');
        if (token) {
          config.headers.Authorization = `${token}`;
        }
        return config;
      },
      error => {
        return Promise.reject(error);
      }
    );
    // 添加响应拦截
    this.instance.interceptors.response.use((result) => {
      if (result.status === 200 && result.data.code === 200) {
        //请求成功
        return result.data;
      } else {
        //请求失败
        return result.data;
      }
    })
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  get(url, data = {}, config = {},other='') {
    if(other.length>0){
      
      return this.instance.get(url+'/'+other, {
        params: data,
        ...config,
      });
    }else{
      console.log(other.length);
      return this.instance.get(url, {
        params: data,
        ...config,
      });
    }
    
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  post(url, data = {}, config = {}) {
    return this.instance.post(url, {
      data: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  put(url, data = {}, config = {}) {
    return this.instance.put(url, {
      data: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  patch(url, data = {}, config = {}) {
    return this.instance.patch(url, {
      data: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  delete(url, data = {}, config = {}) {
    return this.instance.delete(url, {
      params: data,
      ...config,
    });
  }
}

const request = new Http();

export default request;